#ifndef GPIOAPI_H_
#define GPIOAPI_H_

#ifdef __cplusplus
extern "C"
{
#endif

#include <fcntl.h>
#include <poll.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define GPIO_EXPORT "/sys/class/gpio/export"
#define GPIO_UNEXPORT "/sys/class/gpio/unexport"
#define GPIO_DIRECTION "/sys/class/gpio/gpio%d/direction"
#define GPIO_VALUE "/sys/class/gpio/gpio%d/value"
#define GPIO_EDGE "/sys/class/gpio/gpio%d/edge"
#define GPIO_ACTIVE_LOW "/sys/class/gpio/gpio%d/active_low"

#define GPIO(A, B) (A * 32 + B)

    //函数声明
    int gpioExport(int pin);
    int gpioUnexport(int pin);
    int gpioSetDirection(int pin, int direction);
    int gpioReadDirection(int pin, char *dir);
    int gpioSetValue(int pin, int value);
    int gpioReadValue(int pin);
    int gpioSetEdge(int pin, int edge);
    int gpioReadEdge(int pin, char *edge);
    int gpioSetActiveLow(int pin, int low);
    int gpioReadActiveLow(int pin);
    int gpioGetState(int pin, char *dir);

    //函数声明:有依赖
    int gpioOpenValueFileRD(int pin);
    int gpioOpenValueFileWR(int pin);
    int gpioCloseValueFile(int fd);
    int gpioOnlySetValue(int fd, int value);
    int gpioOnlyReadValue(int fd);

#ifdef __cplusplus
}
#endif
#endif /* GPIOAPI_H_ */
